#include <stdio.h>

/*
水仙花数是指一个N位正整数(N>=3),他的每个位上的数字的N次幂之和等于他本身。例如：153=1^3+5^3+3^3.
本体要求编写程序，计算所有N位水仙花数。
输入条件：给出一个正整数N(3<=N<=7)
输出条件：按递增输出所有N位水仙花数，每个数字占一行
*/
int main()
{
	int a = 3;
	int first =1;
	int i = 1;

	// printf("请输入正整数(3<=N<=7)\n");
	// scanf("%d", a);

	//得到位数
	while(i<a){
		first *= 10;
		i++;
	}
	// printf("i=%d\n", i);

	for(int j = first; j<first*10; j++){
		// int t = j;
		int sum = 0;

		//用for循环
		for(int t = j; t>0; t/= 10){
			int d = t%10;
			int p = d;
			int k = 1;
			while(k<i){
				p *= d;
				k++;
			}
			sum += p;
		}

		//用do-while循环
		// do{
		// 	/*
		// 	先对10其余得到个位数字，根据位数进行累乘后加到sum,再除以10去掉个位；
		// 	依次运行得到每个位上的数的累乘依次相加，运行完后t=0跳出do-while循环
		// 	*/
		// 	int d = t%10;			
		// 	int p = d;
		// 	int k = 1;
		// 	while(k<i){
		// 		p *= d;
		// 		k++;
		// 	}
		// 	sum +=p;
		// 	t /= 10;
		// }while(t>0);
		
		if( sum == j){
			printf("%d\n", j);
		}
	}

	return 0;
}